.. _cmmOverrideSpeedSet: cmmOverrideSpeedSet ====================== ---------------------- SYNOPSIS ``````````` .. code-block:: none VT_I4 cmmOverrideSpeedSet( [in] VT_I4 Axis ) DESCRIPTION ``````````````` - 이 함수는 단축 모션이 진행되고 있는 중에 속도를 오버라이딩하고자할 때 사용하는 함수입니다. 속도를 오버라이딩하기 위해서는 먼저 cmmCfgSetSpeedPattern() 속도 패턴 설정 함수를 통하여 변경하고자 하는 속도 또는 가속도값을 설정하고나서 이 함수를 수행해야합니다. PARAMETER ``````````` - Axis: 축번호. 축번호는 상수값으로 [cmX1] 부터 0 번째 축을 기준 축으로 임의의 축을 설정할 수 있습니다. RETURN VALUE ````````````` +--------------+-----------+ | Value | Meaning | +==============+===========+ | 음수 | 수행 실패 | +--------------+-----------+ | cmERR_NONE | 수행 성공 | +--------------+-----------+ REFERENCE ``````````` - 여러축을 동시에 속도 오버라이딩(Overriding)하고자 한다면 이 함수 대신에 cmmOverrideSpeedSetAll() 함수를 사용하십시오. \ - 직선, 원호, 헬리컬 보간작업을 수행하는 경우에는 속도 오버라이딩을 사용할 수 없습니다. EXAMPLE ````````` - 본 예제는 cmmOverrideSpeedSet()함수를 사용하여 속도를 오버라이딩하는 것을 예로 보여주는 코드입니다. 본 예제는 “HIGH” 와 “LOW” 로 이름지어진 두 개의 버튼이 있다고 가정하고 “HIGH” 버튼이 눌리면 X1 축의 속도를 20000 으로 설정하고 “LOW” 버튼이 눌리면 속도를 10000 으로 설정하는 예입니다. .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ #include "Cmmsdk.h" #include "CmmsdkDef.h" #define V_LOW 10000 // 저속모드 속도 #define V_HIGH 20000 // 고속모드 속도 /*************************************************************** * OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이 * 적용되는 부분을 의미합니다. ***************************************************************/ void OnProgramInitial() { long m_nNumAxes; cmmLoadDll(); if(cmmGnDeviceLoad(cmTRUE, &m_nNumAxes) != cmERR_NONE) { //Handle 은 사용자가 생성한 폼의 핸들 값입니다. cmmErrShowLast(Handle); return; } } /************************************************************** * OnStart() : 이 함수는 가상의 함수로서 X 축에 대하여 V-MOVE 모션을 시작합니다. **************************************************************/ void OnStart() { long nIsDone; // 해당축이 작업중이면 정지하고 다시 시작 // cmmSxIsDone(cmX1, &nIsDone); if(nIsDone != cmTRUE) cmmSxStopEmg(cmX1); // 속도설정 => 시작은 LOW 속도로 시작 // cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_LOW, 50000, 50000); // V-Move start // if(cmmSxVMoveStart(cmX1, cmDIR_P)){ cmmErrShowLast(Handle); return; } } /************************************************************** * OnHighButtonClick() : “HIGH” 버튼 콜백함수 (가상함수) * “HIGH”버튼이 클릭되면 속도를 V_HIGH 속도로 오버라이드한다. **************************************************************/ void OnHighButtonClick() { // V_HIGH 속도로 오버라이딩 // cmmSxSetSpeedRatio(cmX1, cmSMODE_S, , 200, 100, 100); //아래 코드로 대체가 가능합니다. //cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_HIGH, 50000, 50000); if(cmmOverrideSpeedSet (cmX1) != cmERR_NONE){ cmmErrShowLast(Handle); return; } } /************************************************************** * OnLowButtonClick() : “LOW” 버튼 콜백함수 (가상함수) * “LOW”버튼이 클릭되면 속도를 V_LOW 속도로 오버라이드한다. **************************************************************/ void OnLowButtonClick() { // V_LOW 속도로 오버라이딩 // cmmSxSetSpeedRatio(cmX1, cmSMODE_S, , 100, 100, 100); //아래 코드로 대체가 가능합니다. //cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, V_LOW, 50000, 50000); if(cmmOverrideSpeedSet (cmX1) != cmERR_NONE){ cmmErrShowLast(Handle); return; } } /************************************************************** * OnStop() : “Stop”명령시에 호출되는 가상의 함수 **************************************************************/ void OnStop() { cmmSxStopEmg(cmX1); } .. code-block:: none :linenos: Visual Basic '/************************************************************** '* OnStart() : 이 함수는 가상의 함수로서 X 축에 대하여 V-MOVE 모션을 ‘*시작합니다. '**************************************************************/ Private Sub OnStart() Dim nIsDone As Long '해당축이 작업중이면 정지하고 다시 시작 Call cmmSxIsDone(cmX1, nIsDone) If (nIsDone <> cmTRUE) Then cmmSxStopEmg (cmX1) End If '시작은 LOW 속도로 시작 Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 10000, 50000, 50000) If (cmmSxVMoveStart(cmX1, cmDIR_P)) Then Call cmmErrShowLast(thisform.Hwnd) End If End Sub '/************************************************************** '* OnHighButtonClick() : "HIGH" 버튼 콜백함수 (가상함수) '* "HIGH"버튼이 클릭되면 속도를 V_HIGH 속도로 오버라이드한다. '**************************************************************/ Private Sub OnHighButtonClick() 'V_HIGH 속도로 오버라이딩 Call cmmSxSetSpeedRatio(cmX1, cmSMODE_S, 200, 100, 100) '아래 코드로 대체가 가능합니다. 'Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 20000, 50000, 50000) If (cmmOverrideSpeedSet(cmX1) <> cmERR_NONE) Then Call cmmErrShowLast(thisform.Hwnd) End If End Sub '/************************************************************** '* OnLowButtonClick() : "LOW" 버튼 콜백함수 (가상함수) '* "LOW"버튼이 클릭되면 속도를 V_LOW 속도로 오버라이드한다. '**************************************************************/ Private Sub OnLowButtonClick() 'V_LOW 속도로 오버라이딩 Call cmmCfgSetSpeedPattern(cmX1, cmSMODE_S, 10000, 50000, 50000) If (cmmOverrideSpeedSet(cmX1) <> cmERR_NONE) Then Call cmmErrShowLast(thisform.Hwnd) End Sub `/************************************************************** `* OnStop() : “Stop”명령시에 호출되는 가상의 함수 `**************************************************************/ Private Sub OnStop() Call cmmSxStopEmg(cmX1) End Sub .. code-block:: none :linenos: Delphi { 다음 예제는 단축 속도 이송 수행 중에 속도 오버라이드 함수를 통해 속도를 변경하는 예제 입니다. } procedure OnMove (); begin // 속도 환경을 설정합니다. cmmCfgSetSpeedPattern (cmX1, cmSMODE_S, 1000, 10000, 10000 ); // 단축 속도 이송을 수행합니다. cmmSxMoveStart (cmX1, cmDIR_P ); end; procedure OnOverrideSpeedHigh () begin // 속도 오버라이드 할 축 및 속도를 지정합니다. cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 2000, 10000, 10000 ); // 또는 cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 200, 100, 100 ); // 진행 중인 이송 작업에 대해 속도를 오버라이드 합니다. cmmOverrideSpeedSet (cmX1 ); end; procedure OnOverrideSpeedLow (); begin // 속도 오버라이드 할 축 및 속도를 지정합니다. cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 500, 10000, 10000 ); // 또는 cmmCfgSetSpeedPattern (cmX1, cmSMODE_KEEP, 50, 100, 100 ); //진행 중인 이송 작업에 대해 속도를 오버라이드 합니다. cmmOverrideSpeedSet (cmX1 ); end;